﻿namespace ConsoleApp1
{
    internal class Program
    {
        static void Main()
        {
            string filePath = @"D:\EASYX\code\chip8-diy\rom\BLINKY";

            try
            {
                // 打开文件流
                using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    
                    // 创建 BinaryReader 对象
                    using (BinaryReader br = new BinaryReader(fs))
                    {
                        long BinarySize= br.BaseStream.Length;
                        Console.WriteLine($"#define chip8_rom_size  {BinarySize} ");
                        Console.WriteLine($"unsigned char chip8_rom[{BinarySize}]=");
                        Console.WriteLine("{");
                        byte bytes;
                        for (int i = 0; i < BinarySize; i++)
                        {
                            if (i % 16 == 0 && i != 0)
                            {
                                Console.WriteLine();
                            }
                            bytes = br.ReadByte();

                            Console.Write((i==0?" ":",")+"0X"+bytes.ToString("X2"));
                            


                        }
                        Console.WriteLine("\r\n};");
                        //    //// 读取文件的字节长度（假设文件的前四个字节存储了文件的长度，这是一个假设的例子）
                        //    //int fileLength = br.ReadInt32();

                        //    //// 读取其他数据，这里根据文件的实际格式来读取
                        //    //// 例如，读取一个整数
                        //    //int someInt = br.ReadInt32();

                        //    //// 读取一个浮点数
                        //    //float someFloat = br.ReadSingle();

                        //    //// 读取一个字符串（假设字符串以 null 字符结尾）
                        //    //char[] chars = br.ReadChars(256); // 假设最大长度为256
                        //    //string someString = new string(chars).TrimEnd('\0');

                        //    //// 打印读取的数据
                        //    //Console.WriteLine($"File Length: {fileLength}");
                        //    //Console.WriteLine($"Integer: {someInt}");
                        //    //Console.WriteLine($"Float: {someFloat}");
                        //    //Console.WriteLine($"String: {someString}");
                        //    //byte[] bytes = br.ReadBytes(fs.Length);    
                        //    // 根据文件的实际格式继续读取其他数据...
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("An error occurred: " + ex.Message);
            }
        }
    }
}